import http from '@/utils/http'

/**
 * MDTK 计算表面张力
 * @param {Object} params 计算参数
 * @returns {Promise} 返回计算结果
 */
export const calculateSurfaceTension = (params) => {
	return http.post({
		url: '/calculate_surface_tension',
		data: params,
		headers: {
			'Content-Type': 'application/json',
			Accept: 'application/json',
		},
		isToken: false, // 外部API不需要token
		showLoading: true,
		showErrorMessage: true,
		errorMessageMode: 'message',
	})
}

/**
 * MDTK 计算粘度
 * @param {Object} params 计算参数
 * @returns {Promise} 返回计算结果
 */
export const calculateViscosity = (params) => {
	return http.post({
		url: '/calculate_viscosity',
		data: params,
		headers: {
			'Content-Type': 'application/json',
			Accept: 'application/json',
		},
		isToken: false, // 外部API不需要token
		showLoading: true,
		showErrorMessage: true,
		errorMessageMode: 'message',
	})
}

/**
 * 计算镁合金导率（热导率/电导率）
 * @param {Object} params 计算参数
 * @returns {Promise} 返回计算结果
 */
export const calculateConductivity = (params) => {
	return http.post({
		url: '/calculate',
		data: params,
		headers: {
			'Content-Type': 'application/json',
			Accept: 'application/json',
		},
		isToken: false, // 外部API不需要token
		showLoading: false, // 由组件自己管理loading状态
		showErrorMessage: false, // 由组件自己处理错误
		errorMessageMode: 'none',
	})
}

/**
 * 检查后端服务健康状态
 * @returns {Promise} 返回服务状态
 */
export const checkHealthStatus = () => {
	return http.get({
		url: '/health',
		headers: {
			'Content-Type': 'application/json',
			Accept: 'application/json',
		},
		isToken: false, // 外部API不需要token
		showLoading: false,
		showErrorMessage: false,
		errorMessageMode: 'none',
	})
}

/**
 * 统一的物性计算接口
 * @param {string} propertyType 物性类型 ('surfaceTension' | 'viscosity')
 * @param {Object} params 计算参数
 * @returns {Promise} 返回计算结果
 */
export const calculateProperty = (propertyType, params) => {
	if (propertyType === 'surfaceTension') {
		return calculateSurfaceTension(params)
	} else if (propertyType === 'viscosity') {
		return calculateViscosity(params)
	} else {
		return Promise.reject(new Error(`不支持的物性类型: ${propertyType}`))
	}
}

/**
 * 获取热导率计算页面URL
 * @returns {string} 热导率计算页面URL
 */
export const getThermalConductivityUrl = () => {
	return '/Product/Conductivity'
}
